Skip to main content

Sub-Phase 1.2: Talent Repository

Fetch builder credibility from Talent Protocol API without inference.

Objective

  • Use GET /score
  • account_source=wallet
  • API key required
  • FORBIDDEN: ranking, scorer variants

Exit Criteria

  • builderScore = points (direct mapping)
  • verifiedBuilder = points > 0 (computed)
  • Returns available | not_found | error (never throws)
  • Availability explicit
  • Configuration injected (no hardcoded URLs or API keys)
  • Uses null for unknown meta values

API Reference

Endpoint: GET https://api.talentprotocol.com/score

Query Parameters:

  • id: Wallet address
  • account_source: Must be wallet

Required Headers:

  • X-API-KEY: Talent Protocol API key
  • Accept: application/json

Response:

{
"score": {
"points": 187,
"last_calculated_at": "2026-01-21T09:36:53Z",
"rank_position": 739,
"slug": "builder_score"
}
}

Behavior Notes:

  • API returns points: 0 for unknown wallets (NOT 404)
  • rank_position may be null for low-activity wallets

Field Mapping

Phase 0 FieldTalent API FieldNotes
data.builderScorescore.pointsDirect mapping
signals.verifiedBuilderComputedpoints > 0
meta.lastUpdatedAtscore.last_calculated_atDirect, null if absent

FORBIDDEN Fields

  • rank_position (present in response - DO NOT MAP)
  • slug (internal identifier - DO NOT MAP)
  • Any percentile or leaderboard data

Availability Mapping

API ResponseAvailability State
200 with valid score objectavailable
200 with missing/malformed datanot_found
401 (invalid key)error
Network failureerror

Exit Checklist

  • Endpoint path verified against live Talent Protocol API
  • Repository compiles without errors
  • Returns available | not_found | error (never throws)
  • builderScore maps directly from points
  • verifiedBuilder computed as points > 0
  • No ranking or scorer variants exposed
  • Configuration injected via TalentConfig
  • Uses null for unknown meta fields
  • No business logic in repository